在開發 Next.js 專案時,常常覺得每次都要重新設定 Axios 實例、寫攔截器(Interceptors)、處理 Token、定義統一的回應型別很繁瑣,如果你希望能有一套開箱即用、結構清晰且型別安全(TypeScript)的 API 模組化架構,那麼我製作的這個輕量級套件 birc-axios 或許能成為你日常開發中的最佳小幫手~!
這是我第一次嘗試寫 npm 套件,如果有修改建議或可以更好的地方歡迎跟我說!!
birc-axios?birc-axios 是一個專為 Next.js(或一般前端專案)設計的 Axios 樣板生成工具。只要在專案根目錄下一行指令,它就會自動幫你建立好一整套經過封裝、具備完整錯誤處理與 Token 自動夾帶機制的 API 基礎架構。
1. 安裝與初始化
在你的專案根目錄直接執行以下指令:
npx birc-axios
執行後,它會在你的專案中自動建立 services/ 目錄,結構如下:
services/
├── api.ts
├── request.ts
├── response.ts
└── example/
├── exampleAPI.ts
└── exampleType.ts
2. 設定環境變數
在你的專案 .env(或 .env.local)檔案中設定你的 API 基礎網址:
NEXT_PUBLIC_API_BASE_URL=https://api.example.com
(註:專案需要支援 @/services/... 的路徑別名,Next.js 預設即支援)
birc-axios 提供了兩種實用風格,讓你可以根據專案需求自由搭配:
request.ts)適合不想為每個端點(Endpoint)都建立檔案、想快速發送請求的場景。
import request from '@/services/request';
type User = {
id: string;
name: string;
};
// 直接傳入路徑與型別
const user = await request.get<User>('/users/1');
if (user.result) {
console.log(user.data);
}
feature-based)適合大型專案,將同一個業務邏輯(例如優惠券、會員等)收斂在同一個檔案中,方便維護與管理。
// 參考 services/example/exampleAPI.ts 的寫法
import CouponAPI from '@/services/example/exampleAPI';
const coupon = await CouponAPI.get('coupon-id');
const list = await CouponAPI.search();
api.ts 會自動檢查 localStorage 是否有 token。如果有,發送請求時會自動帶上 Authorization: Bearer <token>;如果沒有,則會以一般公開請求發送,不需要為了公開頁面額外做處理。Response<T>):| 欄位 | 說明 |
|---|---|
result |
請求是否成功 |
errorCode |
錯誤代碼 |
message |
訊息 |
data |
回應資料本體 |
status |
HTTP 狀態碼 |